<?php namespace Common\Model;
use Hdphp\Model\Model;
//分类管理模型
class Cate extends Model{
	//指定表明固定写法
	protected $table = "category";
	//自动验证，固定写法
	protected $validate = array(
		//array(字段名,验证方法,错误信息,验证条件,验证时间)
		array('cname','required','分类名称不能为空',3,3),
		array('cname','maxlen:20','分类名称不得超过20个字',3,3),
		//array('csort','num:0,65535','排序范围为0-65535',3,3)
	
	);
	//store方法是自己定义如果自动验证通过添加到数据库
	public function store(){
		//触发自动触发验证
		if($this->create()){
			return $this->add();
		}else{
			//验证不通过返回假
			return false;
		}
	    
	}
	//获得除了自己和自己的子集，被分类控制器编辑方法所调用；
	public function getNomy($cid){
		//获得当前分类的自己
		$cids = $this->getSon($this->get(), $cid);
		//把自己的cid压入数组
		$cids[] = $cid;
		//获得除了自己和自己之外的子集
		$data = $this->where("cid not in (" . implode(',', $cids) . ")")->get();
		//将数据变为树状结构并翻出
		$data = Data::tree($data,'cname');
		return $data;
	}
	//获得所有的子集cid
	public function getSon($data,$cid){
		//先定义一个空数组
		$temp = array();
		foreach ($data as $v){
			//当子集pid=传入的cid的时候说明当前$v的就是要找的第一层子集
			if($v['pid'] == $cid){
				//把第一层子集的cid压入空数组
				$temp[] = $v['cid'];
				//递归调用自己，找到第一层下面所有的子集，并且把cid
				//用array_merge函数和前面找出的cid连接起来（合并）
				$temp = array_merge($temp,$this->getSon($data,$v['cid']));
			}
		}
		//在foreach外面返出
		return $temp;
	}
	
	//模型编辑方法
	public function edit(){
		//自动验证
		if($this->create()){
			$this->save();
			return true;
		}else{
			return false;
		}
	    View::make();
	}
	
	
}












 ?>